<HTML>
<header>
<title>VTK Adaptor Framework README</title>
<!-- Created by: will schroeder,  11-Aug-2004 -->

</header>
<body>

<h1>
<IMG ALIGN="middle" SRC=../vtkBanner.gif><br>
The VTK Adaptor Framework and Generic Filtering
</h1>
    <UL>
    <LI> <A HREF="#Overview">Overview</A>
    <LI> <A HREF="#Compatibility">Compatibility Warning</A>
    <LI> <A HREF="#Commercial">Commercial Expression</A>
    <LI> <A HREF="#Acknowledgements">Acknowledgements</A>
    </UL>
<HR>
<h1><A NAME="Overview">Overview</h1>
The classes in this directory are part of a body of work that support the
interface of VTK to external simulation packages. These external packages may
be finite element programs, CFD systems, or other simulation systems that are
based on discretizing a domain into elements, where the element (or in VTK
terminology, cell) basis functions are of arbitrary complexity. The purpose
of this work is to avoid duplicating data in order to visualize it with VTK,
and to take advantage of basis function formulations that are already
implemented in existing simulation packages. (For further details, please see
the paper "Framework for Visualizing Higher-Order Basis Functions" by
Schroeder, Bertel, Malaterre, Thompson, Pebay, O'Bara and Tendulkar, in the
<i>Proceedings of IEEE Visualization 2005</i>, October 2005.)
<p>
In the past, systems that interface with VTK typically require writing output
data in VTK format, or require writing a special VTK reader. Further, cells
of higher-order basis (e.g., cubic, quadric, or even mixed-order
formulations) had no counterpart in VTK, so the user was responsible for
tessellating the cells into linear forms, often at the cost of excessive
memory consumption or inaccuracy.
<p>
We refer to this work as the "adaptor framework". That is, it adapts VTK to a
particular simulation system. It does this by generalizing the VTK dataset,
cell, and attribute classes, and providing special filters that operate on
these new general classes. Further, because we assume that the cells may be
of arbitrary complexity in terms of their basis functions, tessellation
functions (with associated error metric) are used to automatically subdivide
complex cells into linear primitives. This allows the use of standard linear
visualization algorithms: algorithms that have been proven to be robust,
fast, and dependable.
<p>
The adaptor framework consists of a few basic components: new implementations
of data objects (vtkGenericDataSet and vtkGenericAdaptorCell), classes to
support the tessellation of cells (vtkGenericCellTessellator and
vtkGenericSubdivisionErrorMetric), and classes that filter the new data
objects (e.g., vtkGenericContourFilter).
<p>
Note that we choose to implement a select number of filters. One filter
simply performs tessellation on a vtkGenericDataSet to produce a linearized
vtkUnstructuredGrid (vtkGenericDataSetTessellator). The others are common
filters used in a wide variety of visualization applications:
<ul>
  <li> vtkGenericDataSetTessellator </li>
  <li> vtkGenericContourFilter </li>
  <li> vtkGenericCutter </li>
  <li> vtkGenericClip </li>
  <li> vtkGenericProbeFilter </li>
  <li> vtkGenericGlyph3DFilter </li>
  <li> vtkGenericStreamTracer </li>
  <li> vtkGenericGeometryFilter </li>
</ul>

At the same time that we were designing the adaptor framework, we also found
it necessary to rework the vtkDataSet/vtkCell/vtkDataArray API. We found that
the assumptions of contiguous data (manifested in the form of monotonically
increasing, contiguous, integral ids) to be overly limiting. Thus we moved
to an iterator-based framework.

It is possible that in time the vtkGenericDataSet may replace the current
vtkDataSet, and that the existing filters that input vtkDataSet may be
rewritten. However, this is a future undertaking.

<HR>
<h1><A NAME="Compatibility">Compatibility Warning</h1>
The classes in this directory (and the classes found in
VTK/Common/vtkGeneric*) are undergoing rapid development. The names of these
classes, and their API, may change. Please use them only if you are prepared
to deal with the inevitable changes that will occur over the next six
months.<p>

<HR>
<h1><A NAME="Commercial">Commercial Expression</h1>
Kitware 
<a href="http://www.kitware.com">http://www.kitware.com</a>
is teaming with Simmetrix, Inc.
<a href="http://www.simmetrix.com">http://www.simmetrix.com</a>
to create commercial tools that integrate the VTK visualization
environment to Simmetrix's products, and to integrate Simmetrix's
integration framework into ParaView.
<p>
If you are interested in building an adapted framework to VTK from
your analysis/simulation package, please email sales "at" kitware.com
for more information.

<HR>
<h1><A NAME="Acknowledgements">Acknowledgements</h1>
This work has been supported through the efforts of several organizations
and individuals.
<p>
<b>The National Science Foundation</b>
   <ul>
   <li>NSF SBIR Phase II Grant #DMI-0238964<br>
   Title:<i>Visualizing Arbitrary Basis Functions for Advanced Engineering 
      Analysis and Simulation</i><br>
   PI: William J. Schroeder</li> 
   </ul>
<p>
<b>The US National Tri-Lab Community (Sandia, Livermore, Los Alamos)</b>
   <ul>
   <li>David Thompson</li>
   <li>Philippe Pebay</li>
   <li>Brian Wylie</li>
   <li>Gary Templet</li>
   <li>Jim Ahrens</li>
   </ul>
<p>
<b>Kitware, Inc.</b>
   <ul>
   <li>Will Schroeder</li>
   <li>Francois Bertel</li>
   <li>Mathieu Malaterre</li>
   </ul>
<p>
<b>Simmetrix, Inc.</b>
   <ul>
   <li>Bob O'Bara</li>
   <li>Saurabh Tendulkar</li>
   <li>Mark Beall</li>
   </ul>
<b>LeHigh University</b>
   <ul>
   <li>Dr. Herman Nied</li>
   </ul>


</body>
</HTML>
